package com.unju.ventanas.perfil;

import java.awt.Color;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.List;

import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextField;
import javax.swing.ScrollPaneConstants;
import javax.swing.UIManager;
import javax.swing.border.BevelBorder;
import javax.swing.border.TitledBorder;

import com.unju.hibernate.entidades.Perfil;
import com.unju.hibernate.patronDAO.imp.PerfilDAOImp;
import com.unju.utils.AllShowMessage;
import com.unju.utils.ConstantesGlobales;
import com.unju.ventanas.principal.JFrmPrincipal;

import javax.swing.SwingConstants;

import java.awt.Font;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;

public class JPGestorPermiso extends JPanel {
	private static final long serialVersionUID = 1L;
	private JTextField txtBuscar;
	private JPanel jpCabecera;
	private JLabel lblCodPerfil;
	private JLabel lblNomPerfil;
	private JLabel lblApNom;
	private JPanel pResultadoBusqueda;	
	private JScrollPane scrollPane;
	private JButton btnNewButton;
	
	JPGestorPermiso pantallaGPermiso;	
	JDialogNuevoPermiso pNuevoPermiso;
	String codSeg;
	public JPGestorPermiso(String codSeguridad) {
		codSeg=codSeguridad;
		
		crearPanelPrincipal();		
		crearComponetes();
		crearEncabezadoBus();		
		actualizarLista(new PerfilDAOImp().getAll());
		if(codSeg.substring(1, 2).equals("1")){
			btnNewButton.setVisible(true);
		}else{
			btnNewButton.setVisible(false);
		}
	}
	public void crearPanelPrincipal(){
		setBorder(new TitledBorder(UIManager.getBorder("TitledBorder.border"), "", TitledBorder.LEADING, TitledBorder.BELOW_TOP, null, null));
		setSize(1024, 650);
		setMinimumSize(new Dimension(1024, 650));
		setMaximumSize(new Dimension(1024, 650));
		setPreferredSize(new Dimension(1024,650)); 		
		setLayout(null);
	}
	public void crearEncabezadoBus(){
		//Titulo
		JLabel lblTitulo = new JLabel(ConstantesGlobales.TITULO_GESTION_PERMISO);
		lblTitulo.setFont(new Font("Tahoma", Font.BOLD, 20));
		lblTitulo.setHorizontalAlignment(SwingConstants.CENTER);
		lblTitulo.setBounds(350, 15, 268, 40);
		add(lblTitulo);		
		//Cabecera de lista		
		jpCabecera = new JPanel();
		jpCabecera.setBounds(21, 110, 960, 31);
		add(jpCabecera);
		jpCabecera.setBackground(Color.LIGHT_GRAY);
		jpCabecera.setBorder(new BevelBorder(BevelBorder.RAISED, null, null, null, null));
		jpCabecera.setLayout(null);			
		//Nombre de Columna de Cabecera
		lblCodPerfil = new JLabel("Codigo");
		lblCodPerfil.setHorizontalAlignment(SwingConstants.CENTER);
		lblCodPerfil.setBounds(10, 10, 100, 14);
		jpCabecera.add(lblCodPerfil);
		
		lblNomPerfil = new JLabel("Nombre Permiso");
		lblNomPerfil.setHorizontalAlignment(SwingConstants.CENTER);
		lblNomPerfil.setBounds(110, 10, 200, 14);
		jpCabecera.add(lblNomPerfil);
		
		lblApNom = new JLabel("Descripcion");
		lblApNom.setHorizontalAlignment(SwingConstants.CENTER);
		lblApNom.setBounds(310, 10, 400, 14);
		jpCabecera.add(lblApNom);
	}
	public void crearComponetes(){
		//Cuadro de Texto para buscar
		txtBuscar = new JTextField();
		txtBuscar.addKeyListener(new KeyAdapter() {
			@Override
			public void keyTyped(KeyEvent arg0) {
				actualizarLista(new PerfilDAOImp().getFind(txtBuscar.getText().toString()));				
			}
		});
		txtBuscar.setBounds(311, 70, 393, 20);
		txtBuscar.setColumns(10);
		add(txtBuscar);			
		//Etiqueta "Buscar"
		JLabel lblBuscar = new JLabel("Buscar");
		lblBuscar.setBounds(255, 75, 46, 14);
		add(lblBuscar);			
		//Crear boton de Accion
		btnNewButton = new JButton(ConstantesGlobales.BTN_NUEVO);
		btnNewButton.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {				
				pNuevoPermiso=new JDialogNuevoPermiso(JFrmPrincipal.getInstance());
				actualizarLista(new PerfilDAOImp().getAll());					
			}
		});
		btnNewButton.setBounds(784, 555, 95, 23);
		add(btnNewButton);	
		JButton btnNewButton_1 = new JButton(ConstantesGlobales.BTN_ACT_TABLA);
		btnNewButton_1.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				actualizarLista(new PerfilDAOImp().getAll());	
			}
		});
		btnNewButton_1.setBounds(685, 555, 95, 23);
		add(btnNewButton_1);
	}
	
	public void actualizarLista(List<Perfil> lista){
		pResultadoBusqueda=null;
		scrollPane=null;		
		//Crear un Scroll para la lista de Resultado		
		scrollPane = new JScrollPane();
		scrollPane.setBorder(null);
		scrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
		scrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
		scrollPane.setPreferredSize(new Dimension(20, 400));
		scrollPane.setAutoscrolls(true);
		scrollPane.setBounds(10, 150, 1000, 400);
		add(scrollPane);
		
		try {
			//Crea lista de resultado
			pResultadoBusqueda = new JPanel();
			pResultadoBusqueda.setMaximumSize(new Dimension(970, 100000));
			pResultadoBusqueda.setSize(970,10000);		
			pResultadoBusqueda.setPreferredSize(new Dimension(970, 10000));
			pResultadoBusqueda.setBorder(new TitledBorder(UIManager.getBorder("TitledBorder.border"), "Resultado", TitledBorder.LEFT, TitledBorder.TOP, null, new Color(0, 0, 0)));
			pResultadoBusqueda.setLayout(null);
			scrollPane.setViewportView(pResultadoBusqueda);
			int n=20;		
			int cantPerfil=lista.size();
			for (int i = 0; i < cantPerfil; i++) {		
				Perfil p=new Perfil();
				p=lista.get(i);
				JPLineaPermiso fil=new JPLineaPermiso(p,codSeg);
				fil.setBounds(10, n, 960, 31);		
				pResultadoBusqueda.add(fil,i);			
				n=n+40;
			}
			pResultadoBusqueda.setPreferredSize(new Dimension(970, n+10));						
		} catch (Exception e) {
			e.printStackTrace();
			AllShowMessage.showErrorMessage(ConstantesGlobales.MENSAJE_LISTA_ERROR+e);
		}	
		pResultadoBusqueda.validate();//
		pResultadoBusqueda.updateUI();//validate() y updateUI()--> Actualiza la tabla
	}
}
